﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace msdcp
{
    

    public partial class BusNumberDialog : Form
    {
        private char[] availableLetters = new char[] 
            { 'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X', 'Y' };

        private string busNumber;
        private string letters;
        private string figures;
        private string region;

        public string BusNumber
        {
            get { return busNumber; }
            set 
            { 
                busNumber = value;
                busNumber = busNumber.TrimStart('\0', ' ');
                busNumber = busNumber.TrimEnd('\0', ' ');
                string[] numParts = busNumber.Split(' ');
                if (numParts.Length > 3)
                {
                    letters = numParts[0];
                    figures = numParts[1];
                    region = numParts[numParts.Length - 2];
                }
            }
        }

        public BusNumberDialog(string bn)
        {
            InitializeComponent();

            if (!string.IsNullOrEmpty(bn))
            {
                BusNumber = bn;
            }
            txtLetters.Text = letters;
            txtFigures.Text = figures;
            txtRegion.Text = region;
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (txtLetters.Text.Length == 2 &&
                txtFigures.Text.Length == 3 &&
                txtRegion.Text.Length == 3)
            {
                BusNumber = string.Format("{0} {1} {2} RUS", 
                    txtLetters.Text, txtFigures.Text, txtRegion.Text);
            }
        }

        private void BusNumberDialog_Shown(object sender, EventArgs e)
        {
            this.Activate();
            txtLetters.Focus();
        }

        private void txtLetters_TextChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < txtLetters.Text.Length; i++)
            {
                if (!availableLetters.Contains(txtLetters.Text[i]))
                {
                    txtLetters.Text = letters;
                    MessageBox.Show(string.Format("Попытка ввода недопустимого символа.\r\n" + 
                        "Допускаются только латинские буквы верхнего регистра:\r\n" + 
                        "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}", 
                        availableLetters[0], availableLetters[1], availableLetters[2], 
                        availableLetters[3], availableLetters[4], availableLetters[5], 
                        availableLetters[6], availableLetters[7], availableLetters[8], 
                        availableLetters[9], availableLetters[10], availableLetters[11]), 
                        "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }

        private void txtFigures_TextChanged(object sender, EventArgs e)
        {
            if (txtFigures.Text.Length > 0)
            {
                for (int i = 0; i < txtFigures.Text.Length; i++)
                {
                    char c = txtFigures.Text[i];
                    if (!char.IsDigit(c))
                    {
                        txtFigures.Text = figures;
                        MessageBox.Show("Попытка ввода недопустимого символа.\r\n" +
                        "Допускаются только цифры.", "Внимание!", 
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
        }

        private void txtRegion_TextChanged(object sender, EventArgs e)
        {
            if (txtRegion.Text.Length > 0)
            {
                for (int i = 0; i < txtRegion.Text.Length; i++)
                {
                    char c = txtRegion.Text[i];
                    if (!char.IsDigit(c))
                    {
                        txtRegion.Text = figures;
                        MessageBox.Show("Попытка ввода недопустимого символа.\r\n" +
                        "Допускаются только цифры.", "Внимание!",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
        }
    }
}
